{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1.1 例子：多项式拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "假设我们有两个实值变量 $x, t$，满足关系：\n",
    "\n",
    "$$t = sin(2\\pi x) + \\epsilon$$\n",
    "\n",
    "其中 $\\epsilon$ 是一个服从高斯分布的随机值。\n",
    "\n",
    "假设我们有 `N` 组 $(x, t)$ 的观测值 $\\mathsf x \\equiv (x_1, \\dots, x_N)^\\top, \\mathsf t \\equiv (t_1, \\dots, t_N)^\\top$："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2574f9107b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import scipy as sp\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "# 设置 n\n",
    "\n",
    "N = 10\n",
    "\n",
    "# 生成 0，1 之间等距的 N 个 数\n",
    "x_tr = np.linspace(0, 1, N)\n",
    "\n",
    "# 计算 t\n",
    "t_tr = np.sin(2 * np.pi * x_tr) + 0.25 * np.random.randn(N)\n",
    "\n",
    "# 绘图\n",
    "\n",
    "xx = np.linspace(0, 1, 500)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(x_tr, t_tr, 'co')\n",
    "ax.plot(xx, np.sin(2 * np.pi * xx), 'g')\n",
    "ax.set_xlim(-0.1, 1.1)\n",
    "ax.set_ylim(-1.5, 1.5)\n",
    "ax.set_xticks([0, 1])\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "ax.set_xlabel(\"$x$\", fontsize=\"x-large\")\n",
    "ax.set_ylabel(\"$t$\", fontsize=\"x-large\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用这 $N$ 个数据点作为训练集，我们希望得到这个一个模型：给定一个新的输入 $\\hat x$，预测他对应的输出 $\\hat t$。\n",
    "\n",
    "我们使用曲线拟合的方法来解决这个问题。\n",
    "\n",
    "具体来说，我们来拟合这样一个多项式函数：\n",
    "\n",
    "$$\n",
    "y(x,\\mathbf w)=w_0+w_1 x + w_2 x^2 + \\cdots + w_M x^M = \\sum_{j=0}^M w_j x^j\n",
    "$$\n",
    "\n",
    "其中 $M$ 是多项式的阶数，$x^j$ 表示 $x$ 的 $j$ 次方，$\\mathbf w \\equiv (w_0, w_1, \\dots, w_M)$ 表示多项式的系数。\n",
    "\n",
    "这些多项式的系数可以通过我们的数据拟合得到，即在训练集上最小化一个关于 $y(x,\\mathbf w)$ 和 $t$ 的损失函数。常见的一个损失函数是平方误差和，定义为：\n",
    "\n",
    "$$\n",
    "E(\\mathbf w)=\\frac{1}{2} \\sum_{i=1}^N \\left\\{y(x, \\mathbf w) - t_n\\right\\}^2\n",
    "$$\n",
    "\n",
    "因子 $\\frac{1}{2}$ 是为了之后的计算方便加上的。\n",
    "\n",
    "这个损失函数是非负的，当且仅当函数 $y(x, \\mathbf w)$ 通过所有的数据点时才会为零。\n",
    "\n",
    "对于这个损失函数，因为它是一个关于 $\\mathbf w$ 的二次函数，其关于 $\\mathbf w$ 的梯度是一个关于 $\\mathbf w$ 的线性函数，因此我们可以找到一个唯一解 $\\mathbf w^\\star$。\n",
    "\n",
    "$$\n",
    "\\frac{\\partial E(\\mathbf w)}{w_j} = \\sum_{n=1}^N \\left(\\sum_{j=0}^M w_j x_n^j - t_n\\right) x_n^j  = 0\n",
    "$$\n",
    "\n",
    "另一个需要考虑的拟合参数是多项式的阶数 $M$，我们可以看看当 $M = 0,1,3,9$ 时的效果（红线）。\n",
    "\n",
    "可以看到，$M=3$ 似乎是其中较好的一个选择，$M=9$ 虽然拟合的效果最好（通过了所有的训练数据点），但很明显过拟合了。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAAHnCAYAAABzHHFtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VNUWxuHfSYXQa2gmISihKb0jIAoCRpr0UKWKIGBB\nKSqoVBFEOkgRCGCjdwQBgYAGpaqhBEIPVQIEEpKc+8dcRBQ0wGTOTPK9z+NzZSaZ/c3FLBZn9tnL\nME0TERERERF5dG5WBxARERERSS3UXIuIiIiI2ImaaxERERERO1FzLSIiIiJiJ2quRURERETsRM21\niIiIiIidqLkWEREREbETNdciIiIiInai5lpERERExE48rA7wKHLmzGkGBARYHUNE5IHt2rXrgmma\nuazO4Uiq2SLiypJbt126uQ4ICCA8PNzqGCIiD8wwjCirMziaaraIuLLk1m1tCxERERERsRM11yIi\nIiIidqLmWkRERETETtRci4iIiIjYiZrrNCw0OpqAsDDcNm0iICyM0OhoqyOJiMh9qGaLuAaXPi1E\nHl5odDRdIyKITUoCICoujq4REQCE+PpaGU1ERP5GNVvEdejKdRo1MDLyzyJ9W2xSEgMjIy1KJCIi\n96OaLeI61FynUcfj4h7ocRERsY5qtojrUHOdRvl5ez/Q4yIiYh3VbBHXoeY6jRoaGIiP292//T5u\nbgwNDLQokYiI3I9qtojrUHOdRoX4+jItKAh/b28MwN/bm2lBQboxRkTECalmi7gOnRaShoX4+qow\ni4i4CNVsEdegK9ciIiIiInai5lpERERExE7UXIuIiIiI2ImaaxERERERO1FzLSIiIiJiJ2quRURE\nRETsRM21iIiIiIidqLkWEREREbETNdciIiIiInai5lpERERExE7UXIs4iSZNmmAYBq1atfrHc8OH\nD8cwDHxTYPTxqlWrKFWqFN7e3gQEBDBmzBi7ryEikhpZUbe3bNlCw4YN8ff3xzAMPvroI7u+vjw6\nNdciTiI8PJyAgAD27t171+MnTpxg2LBhFChQgHLlytl9zYYNG1KvXj12797N4MGDGTBgAFOmTLHr\nOiIiqZEVdfvatWsUK1aMUaNGkSdPHru+ttiHmmsRJ3Du3DlOnDhBp06dOHjwIHFxcX8+16dPH5o3\nb45hGJQvX96u644ZM4by5cszfPhwihYtSocOHejVqxcjRoyw6zoiIqmNVXW7fv36DB8+nBYtWuDt\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2574feed278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(2, 2, figsize=(12, 8))\n",
    "\n",
    "axes = axes.flatten()\n",
    "Ms = [0, 1, 3, 9]\n",
    "\n",
    "for ax, M in zip(axes, Ms):\n",
    "    # 计算参数​axes.flatten()\n",
    "    coeff = np.polyfit(x_tr, t_tr, M)\n",
    "    \n",
    "    # 生成函数 y(x, w)\n",
    "    f = np.poly1d(coeff)\n",
    "    \n",
    "    # 绘图\n",
    "    xx = np.linspace(0, 1, 500)\n",
    "    ax.plot(x_tr, t_tr, 'co')\n",
    "    ax.plot(xx, np.sin(2 * np.pi * xx), 'g')\n",
    "    ax.plot(xx, f(xx), 'r')\n",
    "    ax.set_xlim(-0.1, 1.1)\n",
    "    ax.set_ylim(-1.5, 1.5)\n",
    "    ax.set_xticks([0, 1])\n",
    "    ax.set_yticks([-1, 0, 1])\n",
    "    ax.set_xlabel(\"$x$\",fontsize=\"x-large\")\n",
    "    ax.set_ylabel(\"$t$\",fontsize=\"x-large\")\n",
    "    ax.text(0.6, 1, '$M={}$'.format(M), fontsize=\"x-large\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通常我们为了检测模型的效果，会找到一组与训练集相同分布的数据进行测试，然后计算不同模型选择下，训练集和测试集上的 $E(\\mathbf w^\\star)$ 值。\n",
    "\n",
    "注意到随着测试点数目的变化，$E(\\mathbf w^\\star)$ 的尺度也在不断变化，因此一个更好的选择是使用 `root-mean-square (RMS)` 误差：\n",
    "\n",
    "$$\n",
    "E_{RMS}=\\sqrt{2E(\\mathbf w^{*}) / N}\n",
    "$$\n",
    "\n",
    "`RMS` 误差的衡量尺度和单位与目标值 $t$ 一致。\n",
    "\n",
    "我们用相同的方法产生100组数据作为测试集，计算不同 $M$ 下的 `RMS` 误差：|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa7b0557750>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_te = np.random.rand(100)\n",
    "t_te = np.sin(2 * np.pi * x_te) + 0.25 * np.random.randn(100)\n",
    "rms_tr, rms_te = [], []\n",
    "\n",
    "for M in xrange(10):\n",
    "    # 计算参数\n",
    "    coeff = np.polyfit(x_tr, t_tr, M)\n",
    "    # 生成函数 y(x, w)\n",
    "    f = np.poly1d(coeff)\n",
    "    \n",
    "    # RMS\n",
    "    rms_tr.append(np.sqrt(((f(x_tr) - t_tr) ** 2).sum() / x_tr.shape[0]))\n",
    "    rms_te.append(np.sqrt(((f(x_te) - t_te) ** 2).sum() / x_te.shape[0]))\n",
    "\n",
    "# 画图\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "ax.plot(range(10), rms_tr, 'bo-', range(10), rms_te, 'ro-')\n",
    "ax.set_xlim(-1, 10)\n",
    "ax.set_ylim(0, 1)\n",
    "ax.set_xticks(xrange(0, 10, 3))\n",
    "ax.set_yticks([0, 0.5, 1])\n",
    "ax.set_xlabel(\"$M$\",fontsize=\"x-large\")\n",
    "ax.set_ylabel(\"$E_{RMS}$\",fontsize=\"x-large\")\n",
    "ax.legend(['Traning', 'Test'], loc=\"best\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到 $M = 9$ 时，虽然训练集上的误差已经降到 `0`，但是测试集上的误差却很大。\n",
    "\n",
    "我们来看看 $M = 9$ 时的多项式系数，为了更好的拟合这些点，系数都会变得很大："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w_9, 117814.76\n",
      "w_8, -541415.20\n",
      "w_7, 1045489.00\n",
      "w_6, -1101026.25\n",
      "w_5, 686023.94\n",
      "w_4, -256186.58\n",
      "w_3, 55193.76\n",
      "w_2, -6165.04\n",
      "w_1, 271.33\n",
      "w_0, 0.08\n"
     ]
    }
   ],
   "source": [
    "for i, w in enumerate(np.polyfit(x_tr, t_tr, 9)):\n",
    "    print \"w_{}, {:.2f}\".format(9 - i, w)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "另一个有趣的现象是查看当训练数据量 $N$ 变多时，$M = 9$ 的模型的表现："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa7b0557dd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 2, figsize=(12, 4))\n",
    "\n",
    "axes = axes.flatten()\n",
    "\n",
    "for ax, N in zip(axes, (15, 100)):\n",
    "    # 生成 0，1 之间等距的 N 个 数\n",
    "    x_tr_more = np.linspace(0, 1, N)\n",
    "\n",
    "    # 计算 t\n",
    "    t_tr_more = np.sin(2 * np.pi * x_tr_more) + 0.25 * np.random.randn(N)\n",
    "    # 计算参数\n",
    "    coeff = np.polyfit(x_tr_more, t_tr_more, M)\n",
    "    # 生成函数 y(x, w)\n",
    "    f = np.poly1d(coeff)\n",
    "    \n",
    "    # 绘图\n",
    "    xx = np.linspace(0, 1, 500)\n",
    "    ax.plot(x_tr_more, t_tr_more, 'co')\n",
    "    ax.plot(xx, np.sin(2 * np.pi * xx), 'g')\n",
    "    ax.plot(xx, f(xx), 'r')\n",
    "    ax.set_xlim(-0.1, 1.1)\n",
    "    ax.set_ylim(-1.5, 1.5)\n",
    "    ax.set_xticks([0, 1])\n",
    "    ax.set_yticks([-1, 0, 1])\n",
    "    ax.set_xlabel(\"$x$\", fontsize=\"x-large\")\n",
    "    ax.set_ylabel(\"$t$\", fontsize=\"x-large\")\n",
    "    ax.text(0.6, 1, '$N={}$'.format(N), fontsize=\"x-large\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到，随着 $N$ 的增大，模型拟合的过拟合现象在减少。\n",
    "\n",
    "当模型的复杂度固定时，随着数据的增加，过拟合的现象也在逐渐减少。\n",
    "\n",
    "回到之前的问题，如果我们一定要在 $N=10$ 的数据上使用 $M=9$ 的模型，那么一个通常的做法是给参数加一个正则项的约束防止过拟合，一个最常用的正则项是平方正则项，即控制所有参数的平方和大小：\n",
    "\n",
    "$$\n",
    "\\tilde E(\\mathbf w) = \\frac{1}{2}\\sum_{i=1}^N \\left\\{y(x_n,\\mathbf w) - t_n\\right\\}^2 + \\frac{\\lambda}{2} \\|\\mathbf w\\|^2\n",
    "$$\n",
    "\n",
    "其中 $\\|\\mathbf w\\|^2 \\equiv \\mathbf{w^\\top w} = w_0^2 + \\dots | w_M^2$，$\\lambda$ 是控制正则项和误差项的相对重要性。\n",
    "\n",
    "若设向量 $\\phi(x)$ 满足 $\\phi_i(x) = x^i, i = 0,1,\\dots,M$，则对 $\\mathbf w$ 最小化，解应当满足：\n",
    "\n",
    "$$\n",
    "\\left[\\sum_{n=1}^N \\phi(x_n) \\phi(x_n)^\\top + \\lambda \\mathbf I\\right] \\mathbf w = \\sum_{n=1}^N t_n \\phi(x_n)\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa7b05c1c10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#x^0+...x^M-1+x^M\n",
    "def phi(x, M):\n",
    "    return x[:,None] ** np.arange(M + 1)\n",
    "\n",
    "# 加正则项的解\n",
    "M = 9\n",
    "lam = 0.0001\n",
    "\n",
    "phi_x_tr = phi(x_tr, M)\n",
    "S_0 = phi_x_tr.T.dot(phi_x_tr) + lam * np.eye(M+1)\n",
    "y_0 = t_tr.dot(phi_x_tr)\n",
    "\n",
    "coeff = np.linalg.solve(S_0, y_0)[::-1]\n",
    "\n",
    "f = np.poly1d(coeff)\n",
    "\n",
    "# 绘图\n",
    "\n",
    "xx = np.linspace(0, 1, 500)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(x_tr, t_tr, 'co')\n",
    "ax.plot(xx, np.sin(2 * np.pi * xx), 'g')\n",
    "ax.plot(xx, f(xx), 'r')\n",
    "ax.set_xlim(-0.1, 1.1)\n",
    "ax.set_ylim(-1.5, 1.5)\n",
    "ax.set_xticks([0, 1])\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "ax.set_xlabel(\"$x$\", fontsize=\"x-large\")\n",
    "ax.set_ylabel(\"$t$\", fontsize=\"x-large\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通常情况下，如果我们需要决定我们系统的复杂度参数 ($\\lambda, M$)，一个常用的方法是从训练数据中拿出一小部分作为验证集，来测试我们的复杂度；不过这样会带来训练减少的问题。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
